#include"os_type.h"

template<typename T>
void swap(T& x,T& y)
{
    T temp=x;
    x=y;
    y=temp;
}
//integer to string， num_str 保存的字符串，num数字，mod 进制
uint32 itos(char* num_str,uint32 num,uint32 mod)
{
    //只能转换2-36进制的整数
    if(mod<2 || mod>36) return 0;
    uint32 temp,length=0;
    //处理负数
    uint32 start=0;
    //进制转换
    while(num)
    {
        temp=num%mod;
        num/=mod;
        num_str[length]=  temp>9? temp-10+'A' : temp+'0';
        length++;
    }
    //处理num=0
    if(!length)
    {
        num_str[length]='0';
        length++;
    }
    //翻转字符串
    for(int i=start,j=length-1;i<j;i++,j--)
    {
        swap(num_str[i],num_str[j]);
    }
    num_str[length]='\0';
    return length;
}
void memset(void* memory,char value,int length)
{
    for(int i=0; i<length; i++)
    {
        ((char*)memory)[i]=value;
    }
}
char* strcpy(char* dest,const char* src)
{
    char* originDest=dest;
    while((*dest++ = *src++)!='\0');
    return originDest;
}
int strcmp(const char* str1,const char* str2)
{
    while(*str1 && *str2 && *str1==*str2)
    {
        str1++;
        str2++;
    }
    return *str1 - *str2;
}
int ceil(const int dividend,const int divisor)
{
    return (dividend+divisor-1)/divisor;
}